package com.zofer.study.array;

import java.util.HashMap;

/**
 * 题目：给出一个整数数组，请在数组中找出两个加起来等于目标值的数，
 * 你给出的函数twoSum 需要返回这两个数字的下标（index1，index2），需要满足 index1 小于index2.。
 * 注意：下标是从1开始的
 * 假设给出的数组中只存在唯一解
 * 例如：
 * 给出的数组为 {20, 70, 110, 150},目标值为90
 * 输出 index1=1, index2=2
 *
 */
public class TwoSum {
    public int[] twoSum (int[] numbers, int target) {
        // write code here
        HashMap<Integer,Integer> hashMap = new HashMap<>();
        int[] index = new int[2];
        for (int i = 0; i < numbers.length; i++) {
            int diff = target-numbers[i];
            if (hashMap.containsKey(diff)){
                index[0] = hashMap.get(diff) + 1;
                index[1] = i + 1;
            }else {
                hashMap.put(numbers[i],i);
            }
        }
        return index;
    }
}
